﻿#ifndef READSENSE_COMMON_H
#define READSENSE_COMMON_H

/* 阅面SDK句柄 */
typedef void*  RSHandle;

enum
{
    RS_SUCCESS = 0,                          /* 成功 */

    /* 1001 ~ 1010: license异常 */
    RS_ERR_LICENSE_INITIAL_FAILURE = 1001,   /* license初始化失败 */
    RS_ERR_LICENSE_VALIDATE_FAILURE = 1002,  /* 不是有效的license */
    RS_ERR_LICENSE_EXPIRED = 1003,           /* license过期 */

    /* 1011 ~ 1030: 参数检测错误 */
    RS_ERR_INVALID_PARAMS = 1011,            /* 异常的参数传入 */
    RS_ERR_NOT_INITIAL = 1012,               /* 句柄未初始化错误 */
    RS_ERR_INVALID_HANDLE = 1013,            /* 不是有效的句柄 */
    RS_ERR_APPID_MISMATCH = 1014,            /* APPID不匹配 */
    RS_ERR_NULL_POINTER = 1015,              /* 传入空指针错误 */
    RS_ERR_OUT_OF_RANGE = 1016,              /* 参数越界错误 */
    RS_ERR_HANDLE_TYPE = 1017,               /* 句柄类型不匹配 */
    RS_ERR_INVALID_CMD = 1018,               /* 错误的CMD命令 */

    /* 1031 ~ 1060: 运行时异常 */
    RS_ERR_INTERNAL = 1031,                  /* 内部异常 */
    RS_ERR_NO_MEMORY = 1032,                 /* 内存不够错误 */
    RS_ERR_OVERFLOW = 1033,                  /* 上溢 */
    RS_ERR_UNDERFLOW = 1034,                 /* 下溢 */
    RS_ERR_RUN_LOCK = 1035,                  /* 与多线程互斥相关 */
    RS_ERR_IO_WRITE = 1036,                  /* 文件写错误 */
    RS_ERR_IO_READ = 1037,                   /* 文件读错误 */
    RS_ERR_IO_ACCESS = 1038,                 /* 文件access异常 */
    RS_ERR_IO_CREATE = 1039,                 /* 文件create异常 */
    RS_ERR_FILE_NOEXIST = 1040,              /* 文件不存在 */
    RS_ERR_IO_FAILED = 1041,                 /* 文件IO异常 */
    RS_ERR_VIDEO_STREAM = 1042,              /* 视频流异常 */
};

/* 图像格式 */
typedef enum
{
    RS_IMG_FORMAT_GRAY = 0,                  /* 图像灰度格式 */
    RS_IMG_FORMAT_NV12,                      /* 图像NV12格式 */
    RS_IMG_FORMAT_NV21,                      /* 图像NV21格式 */
    RS_IMG_FORMAT_I420,                      /* 图像I420格式 */
    RS_IMG_FORMAT_YV12,                      /* 图像YV12格式 */
    RS_IMG_FORMAT_BGR888_PACKED,             /* 图像BGR888打包格式 */
    RS_IMG_FORMAT_BGR888_PLANAR,             /* 图像BGR888平面格式 */
} RSImgFormat;

/* 图像结构体 */
typedef struct
{
    int width;                               /* 图像宽度 */
    int height;                              /* 图像高度 */
    RSImgFormat format;                      /* 图像格式 */
    unsigned char* data;                     /* 图像数据 */
} RSImage;

/* 坐标点 */
typedef struct
{
    int x;                                   /* 点x坐标 */
    int y;                                   /* 点y坐标 */
} RSPoint;

/* 矩形框 */
typedef struct
{
    int x;                                   /* 矩形框左上角点的x坐标 */
    int y;                                   /* 矩形框左上角点的y坐标 */
    int width;                               /* 矩形框的宽度 */
    int height;                              /* 矩形框的高度 */
} RSRect;

#endif